package 力扣链表;

public class Leedcode876链表的中间结点 {
    /**
     * 例子：1->2->3 长度 ： 3    3/2 = 1  头节点开始走一步，删除2
     *     1->2->3->4 长度 ： 4    4/2 = 2  头节点开始走2步，删除3
     * @param head
     * @return
     */
    //方法1：逐个遍历，求长度
    public ListNode middleNode1(ListNode head) {
        int count = 0;
        ListNode temp = head;
        while (temp != null){
            count++;
            temp = temp.next;
        }
        temp = head;
        for (int i = 0; i < count / 2; i++) {
            temp = temp.next;
        }
        return temp;
    }
    //方法2：快慢指针
    public ListNode middleNode(ListNode head) {
        ListNode sl = head;
        ListNode fs = head;
        while (fs != null && fs.next != null){
            sl = sl.next;
            fs = fs.next.next;
        }
        return sl;
    }
}
